c语言考试问题{在线等1!!}

来源:百度知道 编辑:UC知道 时间:2024/05/22 09:49:31
(3) 以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。
#include ”stdio.h”
#include ”ctype.h”
main()
{ char s[80], d[80]; int i,j;
gets(s);
for(i=j=0;__ _1_ __;i++)
if( _ _2_ _ ) { d[j]=s[i]; j++; }
d[j]=’/0’;
puts(d); }
答案 1 :

#include "stdio.h"
#include <ctype.h>
main()
{ char s[80], d[80]; int i,j;
gets(s);
for(i=j=0;i<80 && s[i] != '\0';i++)
if(s[i] < 58 && s[i] > 47 ) { d[j]=s[i]; j++; }
d[j]='\0';
puts(d);
}

ASCII 码 比较 0是48, 9是57

第一个填i小于s的长度,忘了什么语句了

可能跟答案不一样哈^^
1.i<80
2.s[i]>='0'&&s[i]<='9'//判断是否为数字

1.i<strlen(s)
2.s[i]>='0'&&s[i]<='9'

1、s[i]或s[i]!='\0' ;当s[i]为结束时即可退出循环;
2、s[i]>='0' && s[i]<='9';

错了都。第一个空,因为字符串数组里面的数,不一定为80,所以i<80的是错了
应该为s[i]!='\0'或者i<(strlen(s))。第二个空可以写为s[i]>='0' && s[i]<='9'或者s[i] < 58 && s[i] > 47 或者是s[i] <= 57 && s[i] >= 48